#!/usr/bin/env lua
-- -*- coding: utf-8 -*-
-- Judger程序主入口

local api = require("api.init")
local game = require("game.init")

local function errorHandler(err)
    -- 获取堆栈信息
    return debug.traceback(err, 2)
end

local function main()
    -- 主函数
    -- 从标准输入读取战斗输入状态数据, 生成AI命令并输出到标准输出

    local success, result = xpcall(function()
        api.init()

        -- 从标准输入读取数据
        local input_data = io.read("*all")

        -- 解析输入
        local input_state = api.parse_input_state(input_data)

        -- 生成本回合游戏命令集合(TODO: 主要实现该部分逻辑)
        local commands = game.main(input_state)

        -- 格式化并输出命令集合
        local output_data = api.format_output_commands(commands)

        api.output(output_data, io.stdout, true)
    end, errorHandler)

    if not success then
        -- 处理异常
        io.stderr:write("程序执行错误: " .. tostring(result))
        api.output("[]", io.stdout, true)
        os.exit(1)
    end
end

-- 运行主函数
main()
